/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package LogicaNegocio.Controlador;

import AccesoDatos.Persistencia.Manager.ManagerAutor;
import AccesoDatos.Persistencia.Manager.ManagerInformes;
import GUI.Bibliotecario.AdminAutores.PanelActualizarAutor;
import LogicaNegocio.Biblioteca.Autor;
import LogicaNegocio.Validacion.VBiblioteca;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;

/**
 * Esta clase en java permite el control de eventos
 * para actualizacion de areas de conocimiento en el sistema.
 *
 * @author sebaxtian
 * Archivo: ControlActualizarAutor.java
 * @version 1.0
 * Fecha: mar may 11 12:35:57 COT 2010
 */



public class ControlActualizarAutor {

    //Atributos de clase
    private PanelActualizarAutor panelActualizar;
    private ManagerAutor gestorAutor;
    private ManagerInformes gestorInformes;
    private Autor autor;
    private boolean mostrado;


    public ControlActualizarAutor(PanelActualizarAutor panelActualizar) {
        this.panelActualizar = panelActualizar;
        gestorAutor = new ManagerAutor();
        gestorInformes = new ManagerInformes();
        mostrado = false;
    }

    public void actualizar() {
        try {
            autor = new Autor();
            int codigoAutor = Integer.parseInt(panelActualizar.textFieldCodigo.getText());
            autor.setCodigoAutor(Integer.parseInt(panelActualizar.textFieldCodigoNuevo.getText()));
            autor.setPrimerApellido(panelActualizar.textFieldPrimerApellidoNuevo.getText());
            autor.setPrimerNombre(panelActualizar.textFieldPrimerNombreNuevo.getText());
            autor.setSegundoApellido(panelActualizar.textFieldSegundoApellidoNuevo.getText());
            autor.setSegundoNombre(panelActualizar.textFieldSegundoNombreNuevo.getText());
            new VBiblioteca(autor);
            gestorAutor.actualizarAutor(codigoAutor, autor);
            limpiar();
            JOptionPane.showMessageDialog(panelActualizar, "El autor ha sido actualizada con exito", "Actualizar", JOptionPane.PLAIN_MESSAGE);
        } catch(NumberFormatException ex) {
            JOptionPane.showMessageDialog(panelActualizar, "El codigo de autor solo permite caracteres numericos", "Error Codigo", JOptionPane.ERROR_MESSAGE);
        } catch (VBiblioteca ex) {
            JOptionPane.showMessageDialog(panelActualizar, ex.getMessage(), "Error Datos", JOptionPane.INFORMATION_MESSAGE);
        }
    }

    public void actualizarTabla() {
        List<Autor> listaAutores = new ArrayList<Autor>();
        listaAutores = gestorInformes.obtenerListaAutores();
        Autor autores;
        for(int i = 0; i < listaAutores.size(); i++){
            if(panelActualizar.tableAutores.getRowCount() <= i){
                DefaultTableModel tmp = (DefaultTableModel)panelActualizar.tableAutores.getModel();
                Object fila[] = {"",""};
                tmp.addRow(fila);
            }
            autores = listaAutores.get(i);
            panelActualizar.tableAutores.setValueAt(autores.getCodigoAutor(), i, 0);
            panelActualizar.tableAutores.setValueAt(autores.getPrimerNombre(), i, 1);
            panelActualizar.tableAutores.setValueAt(autores.getSegundoNombre(), i, 2);
            panelActualizar.tableAutores.setValueAt(autores.getPrimerApellido(), i, 3);
            panelActualizar.tableAutores.setValueAt(autores.getSegundoApellido(), i, 4);
        }
    }

    public void mostrarDatos() {
        Autor autores;
        int codigoAutor = -1;
        int fila = panelActualizar.tableAutores.getSelectedRow();
        if(fila != -1){
            codigoAutor = Integer.parseInt(panelActualizar.tableAutores.getValueAt(fila, 0).toString());
            autores = gestorAutor.obtenerAutor(codigoAutor);
            panelActualizar.textFieldCodigo.setText(autores.getCodigoAutor()+"");
            panelActualizar.textFieldCodigoNuevo.setText(autores.getCodigoAutor()+"");
            panelActualizar.textFieldPrimerApellido.setText(autores.getPrimerApellido());
            panelActualizar.textFieldPrimerApellidoNuevo.setText(autores.getPrimerApellido());
            panelActualizar.textFieldPrimerNombre.setText(autores.getPrimerNombre());
            panelActualizar.textFieldPrimerNombreNuevo.setText(autores.getPrimerNombre());
            panelActualizar.textFieldSegundoApellido.setText(autores.getSegundoApellido());
            panelActualizar.textFieldSegundoApellidoNuevo.setText(autores.getSegundoApellido());
            panelActualizar.textFieldSegundoNombre.setText(autores.getSegundoNombre());
            panelActualizar.textFieldSegundoNombreNuevo.setText(autores.getSegundoNombre());
            mostrado = true;
        }
    }

    private void limpiar() {
        panelActualizar.textFieldCodigo.setText("");
        panelActualizar.textFieldCodigoNuevo.setText("");
        panelActualizar.textFieldPrimerApellido.setText("");
        panelActualizar.textFieldPrimerApellidoNuevo.setText("");
        panelActualizar.textFieldPrimerNombre.setText("");
        panelActualizar.textFieldPrimerNombreNuevo.setText("");
        panelActualizar.textFieldSegundoApellido.setText("");
        panelActualizar.textFieldSegundoApellidoNuevo.setText("");
        panelActualizar.textFieldSegundoNombre.setText("");
        panelActualizar.textFieldSegundoNombreNuevo.setText("");
        mostrado = false;
    }
}
